package com.ph.shopping.facade.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ph.shopping.facade.score.entity.PhScoreTotalTrade;
import com.ph.shopping.facade.score.vo.MemberCostScore;
import com.ph.shopping.facade.score.vo.MemberScoreShopVo;
import com.ph.shopping.facade.score.vo.MemberScoreVo1;
import com.ph.shopping.facade.score.vo.MemberScoreVo2;

public interface IScoreMapper {

	/**
	 * 
	 * @Title: getScore
	 * @Description: 查询可用积分和待用积分和已提现积分
	 * @author WQiang
	 * @date 2017年3月22日 下午5:40:13
	 * @param memberId
	 * @return
	 */
	public MemberScoreVo2 getScore(@Param("memberId") long memberId);

	/**
	 * 
	 * @Title: updateMemberScore
	 * @Description:更新用户积分
	 * @author WQiang
	 * @date 2017年3月17日 下午5:39:13
	 * @param memberId
	 * @param standbyScore
	 * @param enableScore
	 * @param updateTime
	 * @return
	 * @throws Exception
	 */
	public int updateMemberScore(@Param("memberId") long memberId,
			@Param("standbyScore") long standbyScore, @Param("enableScore") long enableScore,
			@Param("drawcashScore") long drawcashScore) throws Exception;

	/**
	 * 
	 * @Title: insertMemberTrade
	 * @Description: 插入总流水
	 * @author WQiang
	 * @date 2017年3月17日 下午5:42:34
	 * @param memberId
	 * @param tradeCode
	 * @param score
	 * @param createTime
	 * @return
	 */
	// public int insertMemberTrade(@Param("memberId") long memberId,
	// @Param("transCode") int transCode, @Param("score") long score,
	// @Param("createTime") Date createTime);
	public int insertMemberTrade(PhScoreTotalTrade totalTrade);

	/**
	 * 
	 * @Title: insertIncomeTrade
	 * @Description: 记入收入流水
	 * @author WQiang
	 * @date 2017年3月17日 下午8:02:37
	 * @param memberId
	 * @param transCode
	 * @param score
	 * @param createTime
	 * @param setId
	 * @return
	 */
	public int insertIncomeTrade(@Param("memberId") long memberId,
			@Param("transCode") int transCode, @Param("score") long score,
			@Param("setId") long setId, @Param("orderNo") String orderNo);

	/**
	 * 
	 * @Title: insertCostTrade
	 * @Description: 记入支出流水
	 * @author WQiang
	 * @date 2017年3月17日 下午8:02:59
	 * @param memberId
	 * @param transCode
	 * @param score
	 * @param createTime
	 * @param setId
	 * @return
	 */
	public int insertCostTrade(@Param("memberId") long memberId, @Param("transCode") int transCode,
			@Param("score") long score, @Param("setId") long setId,
			@Param("orderNo") String orderNo);

	/***
	 * 
	 * @Title: countOnLineMoney
	 * @Description: 统计线上订单金额
	 * @author WQiang
	 * @date 2017年3月22日 下午2:04:28
	 * @param memberId
	 * @return
	 */
	public long countOnLineMoney(@Param("memberId") long memberId);

	/**
	 * 
	 * @Title: countUnLineMoney
	 * @Description: 统计线下订单金额
	 * @author WQiang
	 * @date 2017年3月22日 下午2:35:23
	 * @param memberId
	 * @return
	 */
	public long countUnLineMoney(@Param("memberId") long memberId);

	/**
	 * 
	 * @Title: getMemberLevel
	 * @Description: 获取用户等级
	 * @author WQiang
	 * @date 2017年3月23日 下午4:49:19
	 * @param meberId
	 * @return
	 */
	public int getMemberLevel(@Param("memberId") long memberId);
	
	/**
	 * 
	* @Title: getMemberScores
	* @Description: 查询会员积分信息
	* @author WQiang
	* @date  2017年3月23日 下午6:40:32
	* @return
	 */
	public List<MemberScoreVo1> getMemberScores();


	/**
	 *
	 * @Title: getMemberScorePage
	 * @Description: 查询会员积分分页查询
	 * @author zhengpeng
	 * @date  2017年3月31日
	 * @return
	 */
	public List<MemberScoreShopVo> getMemberScorePage(@Param("memberId") Long memberId);
	
	/**
	 * 
	* @Title: getMemberCostScore
	* @Description: 获取会员总消费积分
	* @author WQiang
	* @date  2017年4月11日 下午2:08:11
	* @return
	 */
	public List<MemberCostScore> getMemberCostScore();
	
	//更新线上订单返积分状态
	public int updateOrderIsBackScore1(@Param("orderNo") String orderNo) throws Exception;
	
	//更新线下订单返积分状态
	public int updateOrderIsBackScore2(@Param("orderNo") String orderNo) throws Exception;
}
